<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:xhtml="http://www.w3.org/1999/xhtml"
	version="1.0"
	xmlns:exsl="http://exslt.org/common" 
	extension-element-prefixes="exsl"
	>
	 <xsl:strip-space elements="*"/>
   <xsl:output method="html" version="1.0" encoding="ISO-8859-1" indent="yes"/>
	 <xsl:param name="max-depth" select="10"/>

	 <xsl:template match="/">
	 	<xsl:variable name="pass1">
			<xsl:apply-templates mode="pass1"/>
		</xsl:variable>
		<!--<xsl:copy-of select="$pass1"/>-->
	 	<xsl:variable name="pass2">
			<xsl:apply-templates select="exsl:node-set($pass1)//xhtml:html" mode="pass2"/>
		</xsl:variable>
	 	<xsl:variable name="pass3">
			<xsl:apply-templates select="exsl:node-set($pass2)//xhtml:html" mode="pass3"/>
		</xsl:variable>
		<xsl:copy-of select="$pass3"/>
	 </xsl:template>
	 
	 <xsl:template match="*|@*" mode="pass1">
	 	<xsl:param name="depth" select="1"/>
	 	<xsl:param name="div" select="'Book'"/>
	 	<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass1">
				<xsl:with-param name="depth" select="$depth"/>
				<xsl:with-param name="div" select="$div"/>
			</xsl:apply-templates>
			<xsl:apply-templates mode="pass1">
				<xsl:with-param name="depth" select="$depth"/>
				<xsl:with-param name="div" select="$div"/>
			</xsl:apply-templates>
	 	</xsl:copy>
	 </xsl:template>
	 
	 <xsl:template match="*[not(starts-with(@href, 'http://'))]/@href" mode="pass1" >
	 	<xsl:attribute name="href">
			<xsl:value-of select="concat('#', .)"/>
	 	</xsl:attribute>
	 </xsl:template>
	 
	 <xsl:template match="xhtml:img[starts-with(@src, 'http://ibook/rngbook/')]" mode="pass1">
	 	<xhtml:img src="{substring-after(@src, 'http://ibook/rngbook/')}"/>
	 </xsl:template>
	 <xsl:template match="xhtml:img[starts-with(@src, 'http://localhost/rngbook/')]" mode="pass1">
	 	<xhtml:img src="{substring-after(@src, 'http://localhost/rngbook/')}"/>
	 </xsl:template>
	 
	 <xsl:template match="xhtml:body" mode="pass1">
	 	<xsl:param name="depth" select="1"/>
	 	<xsl:param name="div" select="'main'"/>
	 	<xsl:param name="id" select="generate-id()"/>
	 	<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass1">
				<xsl:with-param name="depth" select="$depth"/>
				<xsl:with-param name="div" select="$div"/>
			</xsl:apply-templates>
			<div id="{$id}">
				<h1 class="divTitle"><xsl:value-of select="$div"/></h1>
				<xsl:apply-templates mode="pass1">
					<xsl:with-param name="depth" select="$depth"/>
					<xsl:with-param name="div" select="$div"/>
				</xsl:apply-templates>
				<xsl:apply-templates select="//xhtml:li[xhtml:a and not(starts-with(xhtml:a/@href, 'http://'))]" mode="include">
					<xsl:with-param name="depth" select="$depth"/>
					<xsl:with-param name="div" select="$div"/>
				</xsl:apply-templates>
			</div>
	 	</xsl:copy>
	 </xsl:template>
	 
	 <xsl:template match="xhtml:li" mode="include">
	 	<xsl:param name="depth" select="1"/>
	 	<xsl:param name="div" select="'main'"/>
		<xsl:for-each select="xhtml:a[not(starts-with(@href, 'http://'))]/@href">
			<xsl:if test="$depth &lt; $max-depth">
				<xsl:apply-templates select="document(concat(., '.xhtml'))/xhtml:html/xhtml:body" mode="pass1">
						<xsl:with-param name="depth" select="$depth + 1"/>
						<xsl:with-param name="div" select=".."/>
						<xsl:with-param name="id" select="normalize-space()"/>
				</xsl:apply-templates>
	 		</xsl:if>
		</xsl:for-each>
	 </xsl:template>

	<xsl:template match="*|@*" mode="pass2">
		<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass2"/>
			<xsl:apply-templates mode="pass2"/>
		</xsl:copy>
	</xsl:template>

	<xsl:template match="xhtml:body[ancestor::xhtml:body]" mode="pass2">
		<xsl:apply-templates mode="pass2"/>
	</xsl:template>

	<xsl:template match="xhtml:div[@id = preceding::xhtml:div/@id]" mode="pass2"/>
	<xsl:template match="xhtml:h2[.=preceding-sibling::xhtml:h1[1]]" mode="pass2"/>
	<xsl:template match="xhtml:h3[.=preceding-sibling::xhtml:h1[1]]" mode="pass2"/>

	<xsl:template match="*|@*" mode="pass3">
		<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass3"/>
			<xsl:apply-templates mode="pass3"/>
		</xsl:copy>
	</xsl:template>

	<xsl:template match="xhtml:body" mode="pass3">
		<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass3"/>
			<div id="toc">
				<h1>Table des mati�res</h1>
				<ol>
					<xsl:apply-templates select="xhtml:div" mode="pass3-toc"/>
				</ol>
			</div>
			<xsl:apply-templates mode="pass3"/>
		</xsl:copy>
	</xsl:template>

<!--	<xsl:template match="xhtml:h1[@class='divTitle']" mode="pass3">
		<xsl:copy>
			<xsl:apply-templates select="@*" mode="pass3"/>
			<xsl:apply-templates select="ancestor-or-self::xhtml:div" mode="pass3-number"/>
			<xsl:text> </xsl:text>
			<xsl:apply-templates mode="pass3"/>
		</xsl:copy>
	</xsl:template> -->

<!--	<xsl:template match="xhtml:body/xhtml:div" mode="pass3-number"/>
	
	<xsl:template match="xhtml:div" mode="pass3-number">
		<xsl:value-of select="count(preceding-sibling::xhtml:div) +1"/>
		<xsl:text>.</xsl:text>
	</xsl:template> -->

	<xsl:template match="xhtml:div" mode="pass3-toc">
		<li>
			<a href="#{@id}">
				<xsl:value-of select="xhtml:h1[@class='divTitle']"/>
			</a>
			<xsl:if test="xhtml:div">
				<ol>
					<xsl:apply-templates select="xhtml:div" mode="pass3-toc"/>
				</ol>
			</xsl:if>
		</li>
	</xsl:template>

</xsl:stylesheet>
